package hyl.prod.monitor;

import java.lang.Thread.UncaughtExceptionHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import hyl.base.cache.redis.CRedis;
import hyl.core.MyFun;

public class CheckItem {
	static final int I_未知 = 0;
	static final int I_连接 = 1;
	static final int I_进程 = 2;
	static final int I_端口 = 3;
	static final int I_文件 = 4;
	static final int I_关系并且 = 0;
	static final int I_关系或者 = 1;
	static final int I_RDSK = 5;//

	static final int I_通知邮件 = 1;
	static final int I_通知消息 = 2;
	// 0 并且 1 或者
	int i检查方式 = I_关系并且;
	/**
	 * 检查 redis 的 key 是否存在 或者key.field
	 */

	int _异常次数 = 0;
	int _提醒次数 = 0;
	// 指令类型
	int _类型 = I_未知;
	// 0 不通知 1邮件通知 2 短信通知 3 邮件+短信
	//int _通知 = 0;
	//
	String[] _检查内容 = null;
	String _name = null;

	// 异常处理命令
	String _errcmd = null;
	// 成功处理命令
	String _succcmd = null;

	public void set检查方式(String 方式) {
		if (方式.equals("严格")) {
			i检查方式 = I_关系并且;
		} else if (方式.equals("宽松")) {
			i检查方式 = I_关系或者;
		}
	}

//	public void set通知(String 通知) {
//		_通知 = 0;
//		if (!MyFun.isEmpty(通知)) {
//			if (通知.indexOf("消息") > -1)
//				_通知 += 2;
//			if (通知.indexOf("邮件") > -1)
//				_通知 += 1;
//		}
//	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("ID:").append(_name).append("\n");
		sb.append("类型").append(_类型).append("\n");
		sb.append("检查:").append(MyFun.array2Str(_检查内容, ",")).append("\n");
		//sb.append("通知:").append(_通知).append("\n");
		sb.append("异常回调").append(_errcmd).append("\n");
		sb.append("成功回调").append(_succcmd).append("\n");
		sb.append("异常次数").append(_异常次数).append("\n");
		sb.append("提醒次数").append(_提醒次数).append("\n");
		return sb.toString();

	}

}

class MyUnchecckedExceptionhandler implements UncaughtExceptionHandler {
	static Logger logger = LoggerFactory.getLogger("监控器");

	@Override
	public void uncaughtException(Thread t, Throwable e) {
		logger.error("监控子线程异常终止：" + e);
	}
}
